/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package qlvbdq.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import qlvbdq.dconnection.SQLServerConnect;
import qlvbdq.dto.PhieuNhapHangDTO;

/**
 *
 * @author tuan
 */
public class PhieuNhapHangDAO {
    
    private static final String MaPhieuNH = "MaPNH000";
    private static final int lengthMa = 8;
    
    public PhieuNhapHangDAO() {
    }
    
    public String getNewMaPhieuNhapHang() throws SQLException {
        String MaPNH = "";
        int maxMa = 0;
        ResultSet rs = SQLServerConnect.getInstance().getDataFromStore("GetAllPhieuNhapHangFromDatabase", null);
        while (rs.next()) {
            int temp = Integer.parseInt( rs.getString("MAPHIEUNhap").substring(lengthMa) );
            if (maxMa < temp) {
                maxMa = temp;
            }
        }
        maxMa ++;
        MaPNH = MaPNH.concat(MaPhieuNH + maxMa);
        return MaPNH;
    }
    
    public ArrayList<PhieuNhapHangDTO> SearchPhieuNhapHangByRule(PhieuNhapHangDTO phieuNH) throws SQLException {
        ArrayList<PhieuNhapHangDTO> listPhieuNH = new ArrayList<>();
        Object[] objs = { phieuNH.getMaPhieuNhap(), phieuNH.getNgayNhap(), phieuNH.getNguon(), 
                    phieuNH.getDiaChi(), phieuNH.getTongTien()};
        ResultSet result = SQLServerConnect.getInstance().getDataFromStore("GetPhieuNhapHangToDatabase(?, ?, ?, ?, ?)", objs);
        PhieuNhapHangDTO phieunhaphang;
        while (result.next()) {
            phieunhaphang = new PhieuNhapHangDTO(result.getString("MAPHIEUNHAP"), result.getDate("NGAYNHAP"), result.getString("NGUON"), 
                        result.getString("DIACHI"), result.getLong("TONGTIEN"));
            listPhieuNH.add(phieunhaphang);
        }
        return listPhieuNH;
    }
    
    public ArrayList<PhieuNhapHangDTO> GetPhieuNhapHangByMaPhieuNH(String MaPhieuNH) throws SQLException {
        ArrayList<PhieuNhapHangDTO> listPhieuNH = new ArrayList<>();
        Object[] objs = { MaPhieuNH };
        ResultSet result = SQLServerConnect.getInstance().getDataFromStore("GetPhieuMuaHangByMaPhieuNHDatabase( ? )", objs);
        PhieuNhapHangDTO phieunhaphang;
        while (result.next()) {
            phieunhaphang = new PhieuNhapHangDTO(result.getString("MAPHIEUNHAP"), result.getDate("NGAYNHAP"), result.getString("NGUON"), 
                        result.getString("DIACHI"), result.getLong("TONGTIEN"));
            listPhieuNH.add(phieunhaphang);
        }
        return listPhieuNH;
    }
    
    public int UpdatePhieuNhapHang(PhieuNhapHangDTO phieuNH) {
        Object[] objs = { phieuNH.getMaPhieuNhap(), phieuNH.getNgayNhap(), phieuNH.getNguon(), 
                    phieuNH.getDiaChi(), phieuNH.getTongTien()};
        return SQLServerConnect.getInstance().updateDataToDatabase("UpdatePhieuNhapHangToDatabase(?, ? ,?, ?, ?)", objs);
    }

    public int DeletePhieuNhapHang(PhieuNhapHangDTO phieuNH) {
        Object[] objs = { phieuNH.getMaPhieuNhap() };
        return SQLServerConnect.getInstance().updateDataToDatabase("DeletePhieuNhapHangToDatabase(? )", objs);
    }
    
    public int InsertPhieuNhapHang(PhieuNhapHangDTO phieuNH) {
        Object[] objs = { phieuNH.getMaPhieuNhap(), phieuNH.getNgayNhap(), phieuNH.getNguon(), 
                    phieuNH.getDiaChi(), phieuNH.getTongTien()};
        return SQLServerConnect.getInstance().updateDataToDatabase("InsertPhieuNhapHangToDatabase(?, ? ,?, ?, ?)", objs);
    }
}
